package com.itheima.day15.第二题;
/*
    有一个存放牛奶的箱子，送奶工将牛奶放入箱子，而用户从箱子中获取到牛奶，
    假设箱子只能存储一瓶牛奶，请编写程序模拟牛奶的存储和获取过程。
* */
public class Demo2 {
    public static void main(String[] args) {
        Box box = new Box();

        new Thread(() -> {
            int count = 0;
            while (true){
                synchronized ("lock"){
                    if (box.getCount() == 0){
                        break;  //送完终止
                    }else {
                        if (box.isFlag()){
                            System.out.println("储物箱满,等待中...");
                            try {
                                "lock".wait();
                            } catch (InterruptedException e) {
                                e.printStackTrace();
                            }
                        }else {
                            System.out.println("送奶工将第" + ++count + "份牛奶放入箱中");
                            box.setFlag(true);
                            "lock".notify();
                        }
                    }
                }
            }
        }).start();

        new Thread(() -> {
            int count = 0;
            while (true){
                synchronized ("lock"){
                    if (box.getCount() == 0){
                        break;  //送完终止
                    }else {
                        if (box.isFlag()){
                            System.out.println("用户将第" + ++count + "份牛奶取出");
                            box.setFlag(false);
                            box.countSubtract();
                            "lock".notify();
                        }else {
                            try {
                                "lock".wait();
                            } catch (InterruptedException e) {
                                e.printStackTrace();
                            }
                        }
                    }
                }
            }
        }).start();
    }
}
